home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / plain / contrib / vertex / twocol.tex < prev    next >
Encoding:
Text File  |  1991-05-22  |  2.4 KB  |  74 lines

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. %                two colume output from TUGboat
  3. %              vol. 6, No. 1 (1985) by Craig Platt
  4. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  5.  
  6.  
  7. \newif\iftitle                %true if this is a titlepage
  8.   \global\titlefalse
  9.  
  10.  
  11. \def\titlepage{\global\titletrue} 
  12.  
  13. \def\onepageout#1{\shipout\vbox{%
  14.  \offinterlineskip%
  15.  \vbox to 3pc{%
  16.    \iftitle \global\titlefalse%
  17.    \else\ifodd\pageno\rightheadline\else\leftheadline\fi\fi \vfill}%
  18.  \vbox to \vsize{#1%
  19.       \ifvoid\footins\else%
  20.       \vskip\skip\footins \kern-3pt%
  21. %     \hrule height\ruleht width\hsize \kern-\ruleht \kern3pt%
  22.       \unvbox\footins\fi%
  23.     \boxmaxdepth=\maxdepth}}%
  24. \advancepageno}
  25.  
  26. \newdimen\colwidth \newdimen\bigcolheight        %%%1
  27. \colwidth=13pc \bigcolheight=98pc            %%%2 
  28.  
  29. \output{\onepageout{\unvbox225}}
  30.  
  31. \newbox\partialpage
  32. \newdimen\savesize                    %%%3
  33.  
  34. \def\begindoublecolumns{\begingroup
  35.     \savesize=\vsize                %%%4
  36.     \output={\global\setbox\partialpage=\vbox{\unvbox255}}\eject
  37.     \output={\doublecolumnout} \hsize=\colwidth \vsize=\bigcolheight
  38.     \advance\vsize by -2\ht\partialpage}        %%%5
  39.  
  40. \def\enddoublecolumns{\output={\balancecolumns}\eject
  41.     \global\output={\onepageout{\unvbox255}}    %%%6
  42.     \global\vsize=\savesize                %%%7
  43.     \endgroup \pagegoal=\vsize}
  44.  
  45. \def\doublecolumnout{\dimen0=\pageheight
  46.     \advance\dimen0 by-\ht\partialpage \splittopskip=\topskip
  47.     \setbox0=\vsplit255 to\dimen0
  48.     \setbox2=\vsplit255 to\dimen0
  49.     \onepageout\pagesofar
  50.     \global\vsize=\bigcolheight            %%%8
  51.     \unvbox255 \penalty\outputpenalty}
  52.  
  53. \def\pagesofar{\unvbox\partialpage
  54.     \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}}
  55.  
  56. \def\balancecolumns{\setbox0=\vbox{\unvbox255} \dimen0=\ht0
  57.     \advance\dimen0 by\topskip \advance\dimen0 by-\baselineskip
  58.     \divide\dimen0 by2 \splittopskip=\topskip
  59.     {\vbadness=10000 \loop \global\setbox3=\copy0
  60.        \global\setbox1=\vsplit3 to\dimen0
  61.        \ifdim\ht3>\dimen0 \global\advance\dimen0 by1pt \repeat}
  62.     \setbox0=\vbox to\dimen0{\unvbox1}
  63.     \setbox2=\vbox to\dimen0{\unvbox3}
  64.     \global\output={\balancingerror}        %%%9
  65.     \pagesofar}
  66.  
  67. \newhelp\balerrhelp{Please change the page        %%%10
  68.                        into one that works.}         %%%11
  69.  
  70. \def\balancingerror{\errhelp=\balerrhelp        %%%12
  71.     \errmessage{Page can't be balanced}        %%%13
  72.     \onepageout{\unvbox255}}            %%%14
  73.  
  74.